﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace CANO.Data.DAOs
{
	public class NacionalidadDAO
	{
		public int NacionalidadID { get; set; }
		public string Nacionalidad { get; set; }

		public static List<NacionalidadDAO> getAll()
		{
			using (CANOPropiedadesDCDataContext context = new CANOPropiedadesDCDataContext())
			{
				List<NacionalidadDAO> listNacionalidades = new List<NacionalidadDAO>();

				var nacionalidad =
					from n in context.Nacionalidades
					select n;

				foreach (var item in nacionalidad)
				{
					NacionalidadDAO objNacionalidad = new NacionalidadDAO();
					objNacionalidad.NacionalidadID = item.NacionalidadID;
					objNacionalidad.Nacionalidad = item.Nacionalidad;

					listNacionalidades.Add(objNacionalidad);
				}
				return listNacionalidades;
			}
		}

        public static List<NacionalidadDAO> GetNacionalidadByName(string Nacionalidad)
        {
            using (CANOPropiedadesDCDataContext context = new CANOPropiedadesDCDataContext())
            {
                List<NacionalidadDAO> listNacionalidades = new List<NacionalidadDAO>();

                var nacionalidad =
                    from n in context.Nacionalidades
                    where n.Nacionalidad == Nacionalidad
                    select n;

                foreach (var item in nacionalidad)
                {
                    NacionalidadDAO objNacionalidad = new NacionalidadDAO();
                    objNacionalidad.NacionalidadID = item.NacionalidadID;
                    objNacionalidad.Nacionalidad = item.Nacionalidad;

                    listNacionalidades.Add(objNacionalidad);
                }
                return listNacionalidades;
            }
        }


		public static void create(string pNacionalidad)
		{
			using (CANOPropiedadesDCDataContext context = new CANOPropiedadesDCDataContext())
			{
				Nacionalidades newNacionalidad = new Nacionalidades();
				newNacionalidad.Nacionalidad = pNacionalidad;
				newNacionalidad.NacionalidadID = getId();

				context.Nacionalidades.InsertOnSubmit(newNacionalidad);
				context.SubmitChanges();
			}
		}

		public static int createNew(string pNacionalidad)
		{
			using (CANOPropiedadesDCDataContext context = new CANOPropiedadesDCDataContext())
			{
				Nacionalidades newNacionalidad = new Nacionalidades();
				newNacionalidad.Nacionalidad = pNacionalidad;
				newNacionalidad.NacionalidadID = getId();

				context.Nacionalidades.InsertOnSubmit(newNacionalidad);
				context.SubmitChanges();
				return newNacionalidad.NacionalidadID;
			}
		}


		private static int getId()
		{
			using (CANOPropiedadesDCDataContext context = new CANOPropiedadesDCDataContext())
			{
				var nacionalidadColl =
					from tt in context.Nacionalidades
					select tt.NacionalidadID;

				return nacionalidadColl.Max() + 1;
			}
		}

		public static int? GetIdByName(string nacionalidadToValidate)
		{
			using (CANOPropiedadesDCDataContext context = new CANOPropiedadesDCDataContext())
			{
				var nacionalidadColl =
					(from n in context.Nacionalidades
					 where n.Nacionalidad == nacionalidadToValidate
					 select n);

				return nacionalidadColl.Single().NacionalidadID;
			};
		}
	}
}
